功能
- 通过一系列的条件注解和内建的自动配置类,根据应用程序中的类路径和属性配置,自动为应用配置合适的 Spring Beans
- 条件注解:确保只有在特定条件满足时,相应的配置才会被激活
- 自动配置类:
spring-boot-autoconfigure
模块中包含了许多自动配置类,这些类都是可能被 Spring 容器加载的@Configuration
类。它们会在应用启动时根据条件注解判断是否需要加载 - 类路径:根据类路径中的配置注解,自动加载配置
- 属性配置:通过
application.yml
文件进行属性配置,这些属性会注入到 Bean 中,自动配置类也会根据这些属性来决定是否进行自动配置
细节
- 通过
@EnableAutoConfiguration
注解启动自动配置功能 - 通过
@Configuration
注解标记自动配置类 - 通过
spring.factories
文件中的配置来查找哪些自动配置类需要被加载 - 通过
@Conditional
注解来根据特定的条件判断是否启用某些配置@ConditionalOnClass
:如果类路径中包含指定的类,配置才会生效。@ConditionalOnMissingClass
:如果类路径中没有指定的类,配置才会生效。@ConditionalOnBean
:如果上下文中存在指定的 Bean,配置才会生效。@ConditionalOnMissingBean
:如果上下文中不存在指定的 Bean,配置才会生效。@ConditionalOnProperty
:如果指定的配置属性存在且满足特定值,配置才会生效。@ConditionalOnExpression
:基于 SpEL 表达式进行条件判断。
- Spring Boot 为许多常用的第三方库提供了默认的 Bean 配置,比如嵌入式服务器(Tomcat, Jetty)、数据库连接池(HikariCP)等。如果用户没有提供自己的配置,Spring Boot 就会使用默认的 Bean。
- Spring Boot 支持多种外部化配置,包括环境变量、命令行参数、属性文件、YAML 文件等。这些配置可以在运行时动态替换默认值。
- Spring Boot 的自动配置发生在 Spring 应用的运行阶段,即在 Spring 应用上下文刷新之前。自动配置类会被加载并解析,然后根据条件注解来决定哪些配置应该被激活。
自定义自动配置
- 在
resources
下面创建文件夹META-INF
,在里面创建一个文件spring.factories
- 创建一个配置类,并使用
@Configuration
注解标注
@Configuration
@ConditionalOnClass(MyClass.class)
public class MyAutoConfiguration {
@Service
public MyService myService() {
return new MyService();
}
}
- 在
META-INF/spring.factories
文件中定义自动配置类的加载
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ # 启用SpringBoot的自动配置功能
com.example.MyAutoConfiguration # 指定了一个自定义的自动配置类
Last updated on